name: Publish Documentation
on:
  workflow_dispatch:
  pull_request:
    branches: [ develop ]
    paths:
      - '.github/workflows/gh-pages.yaml'
      - 'CMSIS/Utilities/check_links.sh'
      - 'CMSIS/DoxyGen/**'
  push:
    branches: [ develop ]
    paths:
      - '.github/workflows/gh-pages.yaml'
      - 'CMSIS/Utilities/check_links.sh'
      - 'CMSIS/DoxyGen/**'
jobs:
  docs:
    name: Build develop documentation
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
      - name: Install Doxygen 1.8.6
        run: |
          wget http://archive.ubuntu.com/ubuntu/pool/main/d/doxygen/doxygen_1.8.6-2_amd64.deb
          sudo dpkg -i doxygen_1.8.6-2_amd64.deb
      - name: Install mscgen 0.20
        run: |
          sudo apt-get update
          sudo apt-get install --no-install-recommends -y mscgen=0.20-12
      - name: Install linkchecker
        run: |
          sudo pip install LinkChecker
      - name: Generate doxygen
        run: CMSIS/DoxyGen/gen_doc.sh
      - name: Run linkchecker
        run: |
          echo "::add-matcher::.github/linkchecker.json"
          CMSIS/Utilities/check_links.sh CMSIS/Documentation/index.html
      - name: Upload documentation
        if: ${{ github.event_name == 'pull_request' }}
        uses: actions/upload-artifact@v2
        with:
          path: CMSIS/Documentation/**
      - name: Archive documentation
        if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
        run: |
          cd CMSIS/Documentation
          tar -cvjf /tmp/doc.tbz2 .
      - uses: actions/checkout@v2
        if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
        with:
          ref: gh-pages
      - name: Publish documentation
        if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
        run: |
          rm -r develop
          mkdir develop
          cd develop
          tar -xvjf /tmp/doc.tbz2
          git config user.name github-actions
          git config user.email github-actions@github.com
          git add .
          git commit -m "Update develop documentation"
          git push
